package cn.tedu.test.luban.demo.dubbo;

import com.tarena.demo.luban.all.main.rpc.CartApiImpl;
import com.tarena.luban.demo.cart.api.CartApi;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;

public class Provider {
    public static void main(String[] args) {
        //组织一个dubbo的启动对象 给这个对象一些必要属性
        DubboBootstrap boot=DubboBootstrap.getInstance();
        //每个dubbo进程必须包含一个dubbo应用名称
        boot.application("cart-provider");
        //提供一个注册中心 nacos redis zookeeper
        RegistryConfig registryConfig=
                new RegistryConfig("nacos://localhost:8848");
        boot.registry(registryConfig);
        //配置通信协议和监听端口号 通信协议 dubbo监听端口29900
        ProtocolConfig protocolConfig=
                new ProtocolConfig("dubbo",29900);
        boot.protocol(protocolConfig);
        //准备好一个可以调用的实现对象 CartApiImpl
        //注册信息是分接口注册的,一个接口 一个注册信息
        ServiceConfig<CartApi> serviceConfig=new ServiceConfig<>();
        serviceConfig.setInterface(CartApi.class);
        serviceConfig.setRef(new CartApiImpl());
//        serviceConfig.setLoadbalance();
        boot.service(serviceConfig);
        boot.start().await();
    }
}
